#ifndef compilation_function_signature_h
#define compilation_function_signature_h

#include "defines.h"
/*
 Une fonction est definie avec un :
 type de retour : int ou void
 une signature de variables entre 0 et 32 variables
 un nombre d'arguments
 */
struct function_signature{
	struct symbol * _symbols[32];
	int _number;
};

void function_free(void * f);
/*
 Cree une nouvelle signature de fonction */
void * function_create();
/*
 ajoute un symbole dans la signature de la fonction >> _symbols[32] = symbol */
int function_add_symbol(struct function_signature * f, struct symbol * symbol);
/*
 retourne le nombre d'arguments de la fonction */
int function_get_number_args(struct function_signature * f);
/*
 i : l'indice 0-based de l'argument dans la fonction >> _symbols[number-i-1] */
struct symbol * function_get_symbol(struct function_signature * f, int i);

void function_print_signature(struct function_signature * f);
#endif
